home *** CD-ROM | disk | FTP | other *** search
- Path: uunet!olivea!apple!sun-barr!newstop!exodus!math.berkeley.edu
- From: vojta@math.berkeley.edu (Paul Vojta)
- Newsgroups: comp.sources.x
- Subject: v11i060: xdvi, Patch11, Part02/02
- Message-ID: <7930@exodus.Eng.Sun.COM>
- Date: 13 Feb 91 07:10:26 GMT
- References: <csx-11i059:xdvi@uunet.UU.NET>
- Sender: news@exodus.Eng.Sun.COM
- Lines: 1414
- Approved: argv@sun.com
-
- Submitted-by: vojta@math.berkeley.edu (Paul Vojta)
- Posting-number: Volume 11, Issue 60
- Archive-name: xdvi/patch11.02
- Patch-To: xdvi: Volume 3, Issues 37-39
- Patch-To: xdvi: Volume 4, Issue 44 (xdvi, Patch4)
- Patch-To: xdvi: Volume 4, Issue 96 (xdvi, dvi previewer, Patch5)
- Patch-To: xdvi: Volume 5, Issue 35 (xdvi, dvi previewer, patch 6, part 1/2)
- Patch-To: xdvi: Volume 5, Issue 36 (xdvi, dvi previewer, patch 6, part 2/2)
- Patch-To: xdvi: Volume 6, Issue 5 (xdvi, Patch7)
- Patch-To: xdvi: Volume 6, Issue 49 (xdvi, dvi previewer, patch 8)
- Patch-To: xdvi: Volume 7, Issue 52 (xdvi, dvi previewer, patch 9, part 1/2)
- Patch-To: xdvi: Volume 7, Issue 53 (xdvi, dvi previewer, patch 9, part 2/2)
- Patch-To: xdvi: Volume 10, Issue 9 (xdvi, patch10, part01/02)
- Patch-To: xdvi: Volume 10, Issue 10 (xdvi, patch10, part02/02)
-
- -- cut here --
- diff -cr old/pxl_open.c new/pxl_open.c
- *** old/pxl_open.c Sun Oct 21 14:47:37 1990
- --- new/pxl_open.c Sat Feb 2 16:28:32 1991
- ***************
- *** 1,5 ****
- /*
- ! * pxl_open.c(font, font_ret, mag, mag_ret, factor, name)
- * Find and open gf, pk, or pxl files in the given path, having the given
- * name and magnification. It tries gf files first, followed by pk and pxl
- * files. The path variable should be of the form path1:path2:...:pathn,
- --- 1,5 ----
- /*
- ! * pxl_open.c(font, font_ret, mag, mag_ret, name)
- * Find and open gf, pk, or pxl files in the given path, having the given
- * name and magnification. It tries gf files first, followed by pk and pxl
- * files. The path variable should be of the form path1:path2:...:pathn,
- ***************
- *** 11,23 ****
- * and if it fails then the procedure will try changing the point size
- * as well. If all of the above fails, then alt_font will be tried.
- *
- * If the file is found, then a file pointer is returned, and the following
- * values are set:
- * *font_ret a pointer to a string containing the font name (if
- * different from the font requested).
- * *mag_ret the actual magnification found.
- - * *factor the ratio of the point sizes of the requested font
- - * and the font actually found (or 1.0 if altfont is used).
- * *name a pointer to a string containing the file name
- *
- * If the file is not found, then the return value is NULL.
- --- 11,30 ----
- * and if it fails then the procedure will try changing the point size
- * as well. If all of the above fails, then alt_font will be tried.
- *
- + * If the variable SEARCH_SUBDIRECTORIES is set, then the environment
- + * variable TEXFONTS_SUBDIR and the #define variable DEFAULT_SUBDIR_PATH
- + * will be enabled, as well as ``*'' and ``**'' specifiers. The
- + * SUBDIR_PATH things will be appended to the end of the usual path, with
- + * a `*' at the end of each component. The `*' means that subdirectories
- + * will be searched up to one level; `**' means that subdirectories
- + * will be recursively searched to any level. Neither specifier may be
- + * preceded by a `%' specifier (after the most recent colon).
- + *
- * If the file is found, then a file pointer is returned, and the following
- * values are set:
- * *font_ret a pointer to a string containing the font name (if
- * different from the font requested).
- * *mag_ret the actual magnification found.
- * *name a pointer to a string containing the file name
- *
- * If the file is not found, then the return value is NULL.
- ***************
- *** 49,65 ****
-
- static char *font_path;
- static char *default_font_path = DEFAULT_FONT_PATH;
- static int *sizes, *sizend;
- static char default_size_list[] = DEFAULT_FONT_SIZES;
-
- #ifdef sun
- char *sprintf();
- #endif
-
- ! char *malloc(), *getenv();
- double atof();
-
- static void
- get_sizes(size_list, spp)
- char *size_list;
- int **spp;
- --- 56,306 ----
-
- static char *font_path;
- static char *default_font_path = DEFAULT_FONT_PATH;
- + #ifdef SEARCH_SUBDIRECTORIES
- + static char default_subdir_path[] = DEFAULT_SUBDIR_PATH;
- + #endif
- static int *sizes, *sizend;
- static char default_size_list[] = DEFAULT_FONT_SIZES;
-
- + #define FILENAMESIZE 512
- +
- #ifdef sun
- char *sprintf();
- #endif
-
- ! char *xmalloc(), *getenv();
- double atof();
- + void exit();
-
- + #ifdef SEARCH_SUBDIRECTORIES
- + /* We will need some system include files to deal with directories. */
- + /* <sys/types.h> was included by xdvi.h. */
- + #include <sys/stat.h>
- +
- + static int is_dir ();
- +
- + #if defined(SYSV) || defined(_POSIX_SOURCE)
- + #include <dirent.h>
- + typedef struct dirent *directory_entry_type;
- + #else
- + #include <sys/dir.h>
- + typedef struct direct *directory_entry_type;
- + #endif
- +
- + /* Declare the routine to get the current working directory. */
- +
- + #ifdef HAVE_GETWD
- + extern char *getwd ();
- + #define getcwd(b, len) ((b) ? getwd (b) : getwd (xmalloc (len, "getwd")))
- + #else
- + #ifdef ANSI
- + extern char *getcwd (char *, int);
- + #else
- + extern char *getcwd ();
- + #endif /* not ANSI */
- + #endif /* not HAVE_GETWD */
- +
- + char *cwd;
- +
- + /* The following is a data structure containing the precomputed names of
- + subdirectories to be recursively searched. */
- +
- + static struct subdir_entry {
- + char *name; /* partial string */
- + char *index; /* reference point in {,default_}font_path */
- + struct subdir_entry *next; /* link in list */
- + }
- + *subdir_head = NULL,
- + *next_subdir;
- +
- + #ifndef S_ISDIR
- + #define S_ISDIR(m) ((m & S_IFMT) == S_IFDIR)
- + #endif
- +
- + /* Return true if FN is a directory or a symlink to a directory,
- + false if not. */
- +
- + static int
- + is_dir (fn)
- + char *fn;
- + {
- + struct stat stats;
- +
- + return stat (fn, &stats) == 0 && S_ISDIR (stats.st_mode);
- + }
- +
- + /*
- + * Compute extra length of subdirectory entries, including a star for each.
- + */
- +
- + static int
- + extra_len(str1, str2)
- + char *str1, *str2;
- + {
- + int bias = 0;
- + char *p = str1;
- + char *q;
- +
- + do {
- + q = index(p, PATH_SEP);
- + if (q == NULL) q = p + strlen(p);
- + if (q == p) {
- + if (str2 != NULL) {
- + bias += extra_len(str2, (char *) NULL);
- + str2 = NULL;
- + }
- + }
- + else ++bias; /* don't forget the star */
- + p = q + 1;
- + }
- + while (p[-1] != '\0');
- + return bias + p - str1;
- + }
- +
- + /*
- + * Add the specifiers (and double stars) for the given strings (user
- + * string, plus default string) to the destination string.
- + */
- +
- static void
- + add_subdir_paths(dst, dst_first, src, src_default)
- + char *dst, *dst_first, *src, *src_default;
- + {
- + char *q;
- +
- + do {
- + q = index(src, PATH_SEP);
- + if (q == NULL) q = src + strlen(src);
- + if (q == src) {
- + if (src_default != NULL) {
- + add_subdir_paths(dst, dst_first, src_default, (char *)NULL);
- + dst += strlen(dst);
- + src_default = NULL;
- + }
- + }
- + else {
- + if (dst != dst_first) *dst++ = PATH_SEP;
- + bcopy(src, dst, q - src);
- + dst += q - src;
- + *dst++ = '*';
- + }
- + src = q + 1;
- + }
- + while (src[-1] != '\0');
- + *dst = '\0';
- + }
- +
- + /*
- + * Make a subdirectory entry.
- + */
- +
- + static struct subdir_entry *
- + make_subdir_entry(index, name)
- + char *index, *name;
- + {
- + struct subdir_entry *new_entry;
- + static struct subdir_entry **subdir_tail = &subdir_head;
- +
- + *subdir_tail = new_entry = (struct subdir_entry *)
- + xmalloc(sizeof(struct subdir_entry), "subdirectory list entry");
- + subdir_tail = &(new_entry->next);
- + new_entry->name = strcpy(xmalloc(strlen(name) + 1,
- + "subdirectory entry string"), name);
- + new_entry->index = index;
- + new_entry->next = NULL;
- + return new_entry;
- + }
- +
- + /*
- + * Create the subdirectory linked list for the given initial string
- + */
- +
- + static void
- + add_subdirs(str, len, recurs)
- + char *str;
- + int len;
- + Boolean recurs;
- + {
- + int len1 = len;
- + char temp[FILENAMESIZE];
- + struct subdir_entry *next_subdir;
- + DIR *dir;
- + directory_entry_type e;
- +
- + bcopy(str, temp, len);
- + if (len > 0 && temp[len - 1] != '/') temp[len1++] = '/';
- + temp[len1] = '\0';
- + next_subdir = make_subdir_entry(str, temp + len);
- + do {
- + /* By changing directories, we save a bunch of string
- + concatenations (and make the pathnames the kernel looks up
- + shorter). */
- + Strcpy(temp + len, next_subdir->name);
- + if (chdir (temp) != 0) continue;
- +
- + dir = opendir (".");
- + if (dir == NULL) continue;
- +
- + len1 = strlen(temp);
- + if (len1 == 0 || temp[len1 - 1] != '/') temp[len1++] = '/';
- + while ((e = readdir (dir)) != NULL)
- + {
- + if (is_dir (e->d_name) && strcmp (e->d_name, ".") != 0
- + && strcmp (e->d_name, "..") != 0)
- + {
- + Strcpy(temp + len1, e->d_name);
- + (void) make_subdir_entry(str, temp + len);
- + }
- + }
- + (void) closedir (dir);
- +
- +
- + /* Change back to the current directory, in case the path
- + contains relative directory names. */
- + if (chdir (cwd) != 0) {
- + perror (cwd);
- + exit (errno);
- + }
- + }
- + while (recurs && (next_subdir = next_subdir->next) != NULL);
- + }
- +
- + /*
- + * Recursively figure out the subdirectory tree and precompute the
- + * list of subdirectories to search.
- + */
- +
- + static void
- + compute_subdir_paths(fp, fp_default)
- + char *fp, *fp_default;
- + {
- + char *star_loc = NULL;
- + char *endp;
- +
- + do {
- + if (star_loc == NULL) {
- + star_loc = index(fp, '*');
- + if (star_loc == NULL) star_loc = fp + strlen(fp);
- + }
- + endp = index(fp, PATH_SEP);
- + if (endp == NULL) endp = fp + strlen(fp);
- + if (endp == fp) {
- + if (fp_default != NULL) {
- + compute_subdir_paths(fp_default, (char *) NULL);
- + fp_default = NULL;
- + }
- + }
- + else if (star_loc < endp) {
- + add_subdirs(fp, star_loc - fp, star_loc[1] == '*');
- + star_loc = NULL;
- + }
- + fp = endp + 1;
- + }
- + while (fp[-1] != '\0');
- + }
- + #endif /* SEARCH_SUBDIRECTORIES */
- +
- + static void
- get_sizes(size_list, spp)
- char *size_list;
- int **spp;
- ***************
- *** 79,90 ****
- int *sp, *sp1, *sp2;
- unsigned int n;
- char *p;
-
- ! if ((font_path = getenv("XDVIFONTS")) == NULL) {
- font_path = default_font_path;
- default_font_path = NULL;
- }
-
- size_list = getenv("XDVISIZES");
- n = 1; /* count number of sizes */
- if (size_list == NULL || *size_list == PATH_SEP)
- --- 320,360 ----
- int *sp, *sp1, *sp2;
- unsigned int n;
- char *p;
- + #ifdef SEARCH_SUBDIRECTORIES
- + char *q;
- + #endif
-
- ! if ((font_path = getenv("XDVIFONTS")) == NULL
- ! && (font_path = getenv("TEXFONTS")) == NULL) {
- font_path = default_font_path;
- default_font_path = NULL;
- }
-
- + #ifdef SEARCH_SUBDIRECTORIES
- + p = getenv ("TEXFONTS_SUBDIR");
- + if (p == NULL) p = "";
- + q = xmalloc((unsigned) strlen(font_path)
- + + extra_len(p, default_subdir_path) + 1,
- + "initializing font searching");
- + Strcpy(q, font_path);
- + add_subdir_paths(q + strlen(q), q, p, default_subdir_path);
- + font_path = q;
- +
- + /* Unfortunately, we can't look in the environment for the current
- + directory, because if we are running under a program (let's say
- + Emacs), the PWD variable might have been set by Emacs' parent
- + to the current directory at the time Emacs was invoked. This
- + is not necessarily the same directory the user expects to be
- + in. So, we must always call getcwd(3) or getwd(3), even though
- + they are slow and prone to hang in networked installations. */
- + cwd = getcwd ((char *) NULL, FILENAMESIZE + 2);
- + if (cwd == NULL) {
- + perror ("getcwd");
- + exit (errno);
- + }
- + compute_subdir_paths(font_path, default_font_path);
- + #endif
- +
- size_list = getenv("XDVISIZES");
- n = 1; /* count number of sizes */
- if (size_list == NULL || *size_list == PATH_SEP)
- ***************
- *** 92,98 ****
- ++n;
- if (size_list != NULL)
- for (p = size_list; (p = index(p, PATH_SEP)) != NULL; ++p) ++n;
- ! sizes = (int *) malloc(n * sizeof(int));
- sizend = sizes + n;
- sp = sizes; /* get the actual sizes */
- if (size_list == NULL || *size_list == PATH_SEP)
- --- 362,368 ----
- ++n;
- if (size_list != NULL)
- for (p = size_list; (p = index(p, PATH_SEP)) != NULL; ++p) ++n;
- ! sizes = (int *) xmalloc(n * sizeof(int), "size list");
- sizend = sizes + n;
- sp = sizes; /* get the actual sizes */
- if (size_list == NULL || *size_list == PATH_SEP)
- ***************
- *** 122,128 ****
- int count;
- {
- char *p = path,
- ! nm[128],
- *n = nm,
- c;
- Boolean f_used = False;
- --- 392,398 ----
- int count;
- {
- char *p = path,
- ! nm[FILENAMESIZE],
- *n = nm,
- c;
- Boolean f_used = False;
- ***************
- *** 129,134 ****
- --- 399,418 ----
- Boolean p_used = False;
- FILE *f;
-
- + #ifdef SEARCH_SUBDIRECTORIES
- + if (next_subdir != NULL && next_subdir->index == p) {
- + int len = index(p, '*') - p;
- +
- + bcopy(p, n, len);
- + p += len;
- + n += len;
- + Strcpy(n, next_subdir->name);
- + n += strlen(n);
- + ++p;
- + if (*p == '*') ++p;
- + if (*p != '/') *n++ = '/';
- + }
- + #endif
- for (;;) {
- c = *p++;
- if (c==PATH_SEP || c=='\0') {
- ***************
- *** 168,174 ****
- f = fopen(nm, OPEN_MODE);
- }
- if (f != NULL) {
- ! *name = malloc((unsigned) (n - nm + 1));
- Strcpy(*name, nm);
- }
- return f;
- --- 452,458 ----
- f = fopen(nm, OPEN_MODE);
- }
- if (f != NULL) {
- ! *name = xmalloc((unsigned) (n - nm + 1), "font file name");
- Strcpy(*name, nm);
- }
- return f;
- ***************
- *** 185,191 ****
- char **name;
- char *font_path, *default_font_path;
- {
- ! char *p;
- FILE *f;
- int pkmag = (pxlmag + 2) / 5;
-
- --- 469,475 ----
- char **name;
- char *font_path, *default_font_path;
- {
- ! char *p = font_path;
- FILE *f;
- int pkmag = (pxlmag + 2) / 5;
-
- ***************
- *** 192,201 ****
- /*
- * loop over paths
- */
- ! for (p = font_path;; ++p) {
- int count = 0;
-
- ! if (*p == ':' || *p == '\0') {
- if (default_font_path != NULL &&
- (f = try_size(font, pxlmag, name, default_font_path,
- (char *) NULL)) != NULL)
- --- 476,488 ----
- /*
- * loop over paths
- */
- ! #ifdef SEARCH_SUBDIRECTORIES
- ! next_subdir = subdir_head;
- ! #endif
- ! for (;;) {
- int count = 0;
-
- ! if (*p == PATH_SEP || *p == '\0') {
- if (default_font_path != NULL &&
- (f = try_size(font, pxlmag, name, default_font_path,
- (char *) NULL)) != NULL)
- ***************
- *** 215,222 ****
- --- 502,516 ----
- (f = formatted_open(p, font, "pxl", pxlmag, name, count++))
- != NULL)
- return f;
- + #ifdef SEARCH_SUBDIRECTORIES
- + if (next_subdir != NULL && next_subdir->index == p) {
- + next_subdir = next_subdir->next;
- + if (next_subdir != NULL && next_subdir->index == p) continue;
- + }
- + #endif
- p = index(p, PATH_SEP);
- if (p == NULL) break;
- + ++p;
- }
- return NULL;
- }
- ***************
- *** 234,251 ****
- {
- FILE *f;
- int *p1, *p2, pxlmag;
-
- /*
- * Loop over sizes. Try actual size first, then closest sizes.
- */
- pxlmag = mag + 0.5;
- ! if ((f = try_size(font, *mag_ret = pxlmag, name, font_path,
- default_font_path)) != NULL)
- return f;
- if (pxlmag < mag) ++pxlmag; else --pxlmag;
- ! if ((f = try_size(font, *mag_ret = pxlmag, name, font_path,
- default_font_path)) != NULL)
- return f;
- for (p2 = sizes; p2 < sizend; ++p2) if (*p2 >= mag) break;
- p1 = p2;
- for (;;) {
- --- 528,562 ----
- {
- FILE *f;
- int *p1, *p2, pxlmag;
- + char *path_to_use = font_path;
-
- /*
- * Loop over sizes. Try actual size first, then closest sizes.
- + If the pathname is absolutely or explicitly relative, don't
- + use the usual paths to search for it; just look for it in the
- + directory specified.
- */
- pxlmag = mag + 0.5;
- !
- ! #ifndef VMS
- ! if (*font == '/') path_to_use = "/";
- ! else if (*font == '.' && (*(font + 1) == '/'
- ! || (*(font + 1) == '.' && *(font + 2) == '/')))
- ! path_to_use = ".";
- ! #endif
- !
- ! if ((f = try_size(font, *mag_ret = pxlmag, name, path_to_use,
- default_font_path)) != NULL)
- return f;
- +
- + /* Try at one away from the size we just tried, to account
- + for rounding error. */
- if (pxlmag < mag) ++pxlmag; else --pxlmag;
- ! if ((f = try_size(font, *mag_ret = pxlmag, name, path_to_use,
- default_font_path)) != NULL)
- return f;
- +
- + /* Now try at all the sizes. */
- for (p2 = sizes; p2 < sizend; ++p2) if (*p2 >= mag) break;
- p1 = p2;
- for (;;) {
- ***************
- *** 256,262 ****
- else if (p2 >= sizend || mag * mag <= p1[-1] * *p2)
- pxlmag = *--p1;
- else pxlmag = *p2++;
- ! if ((f = try_size(font, *mag_ret = pxlmag, name, font_path,
- default_font_path)) != NULL)
- return f;
- }
- --- 567,573 ----
- else if (p2 >= sizend || mag * mag <= p1[-1] * *p2)
- pxlmag = *--p1;
- else pxlmag = *p2++;
- ! if ((f = try_size(font, *mag_ret = pxlmag, name, path_to_use,
- default_font_path)) != NULL)
- return f;
- }
- ***************
- *** 263,273 ****
- }
-
- FILE *
- ! pxl_open(font, font_ret, mag, mag_ret, factor, name)
- char *font, **font_ret;
- float mag;
- int *mag_ret;
- - float *factor;
- char **name;
- {
- FILE *f;
- --- 574,583 ----
- }
-
- FILE *
- ! pxl_open(font, font_ret, mag, mag_ret, name)
- char *font, **font_ret;
- float mag;
- int *mag_ret;
- char **name;
- {
- FILE *f;
- ***************
- *** 274,280 ****
- int actual_pt, low_pt, high_pt, trial_pt;
- char fn[50], *fnend;
-
- - *factor = 1.0;
- f = pre_pxl_open(font, mag, mag_ret, name);
- if (f != NULL) {
- *font_ret = NULL;
- --- 584,589 ----
- ***************
- *** 297,304 ****
- Sprintf(fnend, "%d", trial_pt);
- f = pre_pxl_open(fn, mag * actual_pt / trial_pt, mag_ret, name);
- if (f != NULL) {
- ! *font_ret = strcpy(malloc((unsigned) strlen(fn) + 1), fn);
- ! *factor = (float) actual_pt / trial_pt;
- return f;
- }
- }
- --- 606,613 ----
- Sprintf(fnend, "%d", trial_pt);
- f = pre_pxl_open(fn, mag * actual_pt / trial_pt, mag_ret, name);
- if (f != NULL) {
- ! *font_ret = strcpy(xmalloc((unsigned) strlen(fn) + 1,
- ! "name of font used"), fn);
- return f;
- }
- }
- ***************
- *** 307,313 ****
- *font_ret = alt_font;
- f = pre_pxl_open(alt_font, mag, mag_ret, name);
- if (f != NULL)
- ! *font_ret = strcpy(malloc((unsigned) strlen(alt_font) + 1),
- alt_font);
- }
- return f;
- --- 616,623 ----
- *font_ret = alt_font;
- f = pre_pxl_open(alt_font, mag, mag_ret, name);
- if (f != NULL)
- ! *font_ret = strcpy(xmalloc((unsigned) strlen(alt_font) + 1,
- ! "name of font used"),
- alt_font);
- }
- return f;
- diff -cr old/tpic.c new/tpic.c
- *** old/tpic.c Sun Oct 21 14:47:54 1990
- --- new/tpic.c Fri Dec 7 16:54:30 1990
- ***************
- *** 410,415 ****
- else if (strcmp(command, "sh") == 0) shade_last();
- else if (strcmp(command, "wh") == 0) whiten_last();
- else if (strcmp(command, "bk") == 0) blacken_last();
- ! else if (spec_warn_now)
- Fprintf(stderr, "%s: special \"%s\" not implemented\n", prog, orig_cp);
- }
- --- 410,415 ----
- else if (strcmp(command, "sh") == 0) shade_last();
- else if (strcmp(command, "wh") == 0) whiten_last();
- else if (strcmp(command, "bk") == 0) blacken_last();
- ! else if (!hush_spec_now)
- Fprintf(stderr, "%s: special \"%s\" not implemented\n", prog, orig_cp);
- }
- diff -cr old/xdvi.c new/xdvi.c
- *** old/xdvi.c Sun Oct 21 14:49:08 1990
- --- new/xdvi.c Mon Feb 4 13:05:55 1991
- ***************
- *** 116,121 ****
- --- 116,145 ----
- #define DPY DISP,
- static Screen *SCRN;
- static Cursor redraw_cursor, ready_cursor;
- +
- + #ifdef VMS
- + /*
- + * Magnifying glass cursor
- + *
- + * Developed by Tom Sawyer, April 1990
- + * Contibuted by Hunter Goatley, January 1991
- + *
- + */
- +
- + #define mag_glass_width 16
- + #define mag_glass_height 16
- + #define mag_glass_x_hot 6
- + #define mag_glass_y_hot 6
- + static char mag_glass_bits[] = {
- + 0xf8, 0x03, 0x0c, 0x06, 0xe2, 0x09, 0x13, 0x1a, 0x01, 0x14, 0x01, 0x14,
- + 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x03, 0x10, 0x02, 0x18, 0x0c, 0x34,
- + 0xf8, 0x6f, 0x00, 0xd8, 0x00, 0xb0, 0x00, 0xe0
- + };
- + #include <decw$cursor.h> /* Include the DECWindows cursor symbols */
- + static int DECWCursorFont; /* Space for the DECWindows cursor font */
- + static Pixmap MagnifyPixmap; /* Pixmap to hold our special mag-glass */
- + #endif /* VMS */
- +
- #define SetCursor(x) XDefineCursor(DISP, WINDOW(mane), x)
- #define ClearPage(wr) XClearWindow(DISP, WINDOW(wr));
- #define ClearArea(win, x, y, w, h) XClearArea(DISP, win, x, y, w, h, False)
- ***************
- *** 160,166 ****
- int offset_x, offset_y;
- int unshrunk_paper_w, unshrunk_paper_h;
- int unshrunk_page_w, unshrunk_page_h;
- ! Boolean spec_warn = True;
- static char *paper = DEFAULT_PAPER;
- static char *sidemargin, *topmargin;
- static char *xoffset, *yoffset;
- --- 184,191 ----
- int offset_x, offset_y;
- int unshrunk_paper_w, unshrunk_paper_h;
- int unshrunk_page_w, unshrunk_page_h;
- ! Boolean hush_spec = False;
- ! Boolean hush_chars = False;
- static char *paper = DEFAULT_PAPER;
- static char *sidemargin, *topmargin;
- static char *xoffset, *yoffset;
- ***************
- *** 309,320 ****
- {"Shrink2", "sh2", 2 << 8 | 's', 200},
- {"Shrink3", "sh3", 3 << 8 | 's', 250},
- {"Shrink4", "sh4", 4 << 8 | 's', 300},
- ! {"Next", "next", 'n', 400},
- ! {"Page+5", "next5", 5 << 8 | 'n', 450},
- ! {"Page+10", "next10", 10 << 8 | 'n', 500},
- ! {"Prev", "prev", 'p', 600},
- ! {"Page-5", "prev5", 5 << 8 | 'p', 650},
- ! {"Page-10", "prev10", 10 << 8 | 'p', 700},
- };
-
- static void handle_command();
- --- 334,345 ----
- {"Shrink2", "sh2", 2 << 8 | 's', 200},
- {"Shrink3", "sh3", 3 << 8 | 's', 250},
- {"Shrink4", "sh4", 4 << 8 | 's', 300},
- ! {"Page-10", "prev10", 10 << 8 | 'p', 400},
- ! {"Page-5", "prev5", 5 << 8 | 'p', 450},
- ! {"Prev", "prev", 'p', 500},
- ! {"Next", "next", 'n', 600},
- ! {"Page+5", "next5", 5 << 8 | 'n', 650},
- ! {"Page+10", "next10", 10 << 8 | 'n', 700},
- };
-
- static void handle_command();
- ***************
- *** 415,421 ****
- char *sprintf();
- #endif
-
- - char *malloc();
- double atof();
- void exit();
-
- --- 440,445 ----
- ***************
- *** 1192,1197 ****
- --- 1216,1224 ----
- case 'q':
- case '\003': /* control-C */
- case '\004': /* control-D */
- + #ifdef VMS
- + case '\032': /* control-Z */
- + #endif
- exit(0);
- case 'n':
- case 'f':
- ***************
- *** 1362,1368 ****
- if (0 <= next_page && next_page < total_pages) {
- if (current_page != next_page) {
- current_page = next_page;
- ! spec_warn_now = spec_warn;
- if (!keep_flag) home(False);
- }
- canit = True;
- --- 1389,1395 ----
- if (0 <= next_page && next_page < total_pages) {
- if (current_page != next_page) {
- current_page = next_page;
- ! hush_spec_now = hush_spec;
- if (!keep_flag) home(False);
- }
- canit = True;
- ***************
- *** 1629,1635 ****
- }
- else {
- draw_page();
- ! spec_warn_now = False;
- }
- }
-
- --- 1656,1662 ----
- }
- else {
- draw_page();
- ! hush_spec_now = True;
- }
- }
-
- ***************
- *** 1746,1756 ****
- #ifndef VMS
- #ifdef BUTTONS
- Fputs("\
- ! Usage: xdvi [+[<page>]] [-s <shrink>] [-S <density>] [-p <pixels>] [-l] [-sw]\n\
- [-expert] [-paper <papertype>] [-mgs[n] <size>] [-altfont <font>]\n\
- ! [-margins <dimen>] [-sidemargin <dimen>] [-topmargin <dimen>] [-rv]\
- ! \n\
- ! [-offsets <dimen>] [-xoffset <dimen>] [-yoffset <dimen>]\n\
- [-fg <color>] [-bg <color>] [-hl <color>] [-bd <color>] \
- [-cr <color>]\n\
- [-bw <width>] [-geometry <geometry>] [-icongeometry <geometry>]\n\
- --- 1773,1783 ----
- #ifndef VMS
- #ifdef BUTTONS
- Fputs("\
- ! Usage: xdvi [+[<page>]] [-s <shrink>] [-S <density>] [-p <pixels>] [-l] [-rv]\n\
- [-expert] [-paper <papertype>] [-mgs[n] <size>] [-altfont <font>]\n\
- ! [-margins <dimen>] [-sidemargin <dimen>] [-topmargin <dimen>]\n\
- ! [-offsets <dimen>] [-xoffset <dimen>] [-yoffset <dimen>] [-keep]\n\
- ! [-hushspecials] [-hushchars] [-hush]\n\
- [-fg <color>] [-bg <color>] [-hl <color>] [-bd <color>] \
- [-cr <color>]\n\
- [-bw <width>] [-geometry <geometry>] [-icongeometry <geometry>]\n\
- ***************
- *** 1758,1768 ****
- stderr);
- #else /* !BUTTONS */
- Fputs("\
- ! Usage: xdvi [+[<page>]] [-s <shrink>] [-S <density>] [-p <pixels>] [-l] [-sw]\n\
- [-paper <papertype>] [-mgs[n] <size>] [-altfont <font>]\n\
- ! [-margins <dimen>] [-sidemargin <dimen>] [-topmargin <dimen>] [-rv]\
- ! \n\
- ! [-offsets <dimen>] [-xoffset <dimen>] [-yoffset <dimen>]\n\
- [-fg <color>] [-bg <color>] [-hl <color>] [-bd <color>] \
- [-cr <color>]\n\
- [-bw <width>] [-geometry <geometry>] [-icongeometry <geometry>]\n\
- --- 1785,1795 ----
- stderr);
- #else /* !BUTTONS */
- Fputs("\
- ! Usage: xdvi [+[<page>]] [-s <shrink>] [-S <density>] [-p <pixels>] [-l] [-rv]\n\
- [-paper <papertype>] [-mgs[n] <size>] [-altfont <font>]\n\
- ! [-margins <dimen>] [-sidemargin <dimen>] [-topmargin <dimen>]\n\
- ! [-offsets <dimen>] [-xoffset <dimen>] [-yoffset <dimen>] [-keep]\n\
- ! [-hushspecials] [-hushchars] [-hush]\n\
- [-fg <color>] [-bg <color>] [-hl <color>] [-bd <color>] \
- [-cr <color>]\n\
- [-bw <width>] [-geometry <geometry>] [-icongeometry <geometry>]\n\
- ***************
- *** 1771,1795 ****
- #endif /* BUTTONS */
- #else /* VMS */
- Fputs("\
- ! Usage: xdvi [+[<page>]] [-s <shrink>] [-density <%>] [-p <pixels>] [-l] [-sw]\n\
- [-paper <papertype>] [-mgs[n] <size>] [-altfont <font>]\n\
- ! [-margins <dimen>] [-sidemargin <dimen>] [-topmargin <dimen>] [-rv]\
- \n", stderr);
- Fputs("\
- ! [-offsets <dimen>] [-xoffset <dimen>] [-yoffset <dimen>]\n\
- [-fg <color>] [-bg <color>] [-hl <color>] [-bd <color>] \
- [-cr <color>]\n\
- [-bw <width>] [-geometry <geometry>] [-icongeometry <geometry>]\n\
- ! [-iconic] [-display <host:display>] [-copy] [-thorough] dvi_file\n",
- stderr);
- #endif /* VMS */
- #else /* X10 */
- Fputs("\
- ! Usage: xdvi [+[<page>]] [-s <shrink>] [-S <density>] [-p <pixels>] [-l] [-sw]\n\
- [-paper <papertype>] [-mgs[n] <size>] [-altfont <font>]\n\
- ! [-margins <dimen>] [-sidemargin <dimen>] [-topmargin <dimen>] [-rv]\
- ! \n\
- ! [-offsets <dimen>] [-xoffset <dimen>] [-yoffset <dimen>]\n\
- [-fg <color>] [-bg <color>] [-hl <color>] [-bd <color>] \
- [-cr <color>]\n\
- [-bw <width>] [-geometry <geometry> | =<geometry>]\n\
- --- 1798,1823 ----
- #endif /* BUTTONS */
- #else /* VMS */
- Fputs("\
- ! Usage: xdvi [+[<page>]] [-s <shrink>] [-density <%>] [-p <pixels>] [-l] [-rv]\n\
- [-paper <papertype>] [-mgs[n] <size>] [-altfont <font>]\n\
- ! [-margins <dimen>] [-sidemargin <dimen>] [-topmargin <dimen>]\
- \n", stderr);
- Fputs("\
- ! [-offsets <dimen>] [-xoffset <dimen>] [-yoffset <dimen>] [-keep]\n\
- ! [-hushspecials] [-hushchars] [-hush]\n\
- [-fg <color>] [-bg <color>] [-hl <color>] [-bd <color>] \
- [-cr <color>]\n\
- [-bw <width>] [-geometry <geometry>] [-icongeometry <geometry>]\n\
- ! [-iconic] [-display <host::display>] [-copy] [-thorough] dvi_file\n",
- stderr);
- #endif /* VMS */
- #else /* X10 */
- Fputs("\
- ! Usage: xdvi [+[<page>]] [-s <shrink>] [-S <density>] [-p <pixels>] [-l]\n\
- [-paper <papertype>] [-mgs[n] <size>] [-altfont <font>]\n\
- ! [-margins <dimen>] [-sidemargin <dimen>] [-topmargin <dimen>]\n\
- ! [-offsets <dimen>] [-xoffset <dimen>] [-yoffset <dimen>] [-keep]\n\
- ! [-hushspecials] [-hushchars] [-hush]\n\
- [-fg <color>] [-bg <color>] [-hl <color>] [-bd <color>] \
- [-cr <color>]\n\
- [-bw <width>] [-geometry <geometry> | =<geometry>]\n\
- ***************
- *** 1838,1845 ****
- {"-altfont", ".altFont", XrmoptionSepArg, (caddr_t) NULL},
- {"-l", ".listFonts", XrmoptionNoArg, (caddr_t) "on"},
- {"+l", ".listFonts", XrmoptionNoArg, (caddr_t) "off"},
- ! {"-sw", ".specialWarn", XrmoptionNoArg, (caddr_t) "on"},
- ! {"+sw", ".specialWarn", XrmoptionNoArg, (caddr_t) "off"},
- {"-fg", ".foreground", XrmoptionSepArg, (caddr_t) NULL},
- {"-foreground", ".foreground", XrmoptionSepArg, (caddr_t) NULL},
- {"-bg", ".background", XrmoptionSepArg, (caddr_t) NULL},
- --- 1866,1877 ----
- {"-altfont", ".altFont", XrmoptionSepArg, (caddr_t) NULL},
- {"-l", ".listFonts", XrmoptionNoArg, (caddr_t) "on"},
- {"+l", ".listFonts", XrmoptionNoArg, (caddr_t) "off"},
- ! {"-hushspecials", ".hushSpecials", XrmoptionNoArg, (caddr_t) "on"},
- ! {"+hushspecials", ".hushSpecials", XrmoptionNoArg, (caddr_t) "off"},
- ! {"-hushchars", ".hushLostChars", XrmoptionNoArg, (caddr_t) "on"},
- ! {"+hushchars", ".hushLostChars", XrmoptionNoArg, (caddr_t) "off"},
- ! {"-hush", ".Hush", XrmoptionNoArg, (caddr_t) "on"},
- ! {"+hush", ".Hush", XrmoptionNoArg, (caddr_t) "off"},
- {"-fg", ".foreground", XrmoptionSepArg, (caddr_t) NULL},
- {"-foreground", ".foreground", XrmoptionSepArg, (caddr_t) NULL},
- {"-bg", ".background", XrmoptionSepArg, (caddr_t) NULL},
- ***************
- *** 1847,1852 ****
- --- 1879,1886 ----
- {"-hl", ".highlight", XrmoptionSepArg, (caddr_t) NULL},
- {"-cr", ".cursorColor", XrmoptionSepArg, (caddr_t) NULL},
- {"-icongeometry",".iconGeometry",XrmoptionSepArg, (caddr_t) NULL},
- + {"-keep", ".keepPosition",XrmoptionNoArg, (caddr_t) "on"},
- + {"+keep", ".keepPosition",XrmoptionNoArg, (caddr_t) "off"},
- {"-copy", ".copy", XrmoptionNoArg, (caddr_t) "on"},
- {"+copy", ".copy", XrmoptionNoArg, (caddr_t) "off"},
- {"-thorough", ".thorough", XrmoptionNoArg, (caddr_t) "on"},
- ***************
- *** 1888,1895 ****
- (Cardinal) &list_fonts, XtRBoolean, (caddr_t) &list_fonts},
- {"reverseVideo", "ReverseVideo", XtRBoolean, sizeof(Boolean),
- (Cardinal) &reverse, XtRBoolean, (caddr_t) &reverse},
- ! {"specialWarn", "SpecialWarn", XtRBoolean, sizeof(Boolean),
- ! (Cardinal) &spec_warn, XtRBoolean, (caddr_t) &spec_warn},
- {"foreground", "Foreground", XtRPixel, sizeof(Pixel),
- (Cardinal)&fore_Pixel, XtRPixel, (caddr_t) &fore_Pixel},
- {"foreground", "Foreground", XtRString, sizeof(char *),
- --- 1922,1931 ----
- (Cardinal) &list_fonts, XtRBoolean, (caddr_t) &list_fonts},
- {"reverseVideo", "ReverseVideo", XtRBoolean, sizeof(Boolean),
- (Cardinal) &reverse, XtRBoolean, (caddr_t) &reverse},
- ! {"hushSpecials", "Hush", XtRBoolean, sizeof(Boolean),
- ! (Cardinal) &hush_spec, XtRBoolean, (caddr_t) &hush_spec},
- ! {"hushLostChars", "Hush", XtRBoolean, sizeof(Boolean),
- ! (Cardinal) &hush_chars, XtRBoolean, (caddr_t) &hush_chars},
- {"foreground", "Foreground", XtRPixel, sizeof(Pixel),
- (Cardinal)&fore_Pixel, XtRPixel, (caddr_t) &fore_Pixel},
- {"foreground", "Foreground", XtRString, sizeof(char *),
- ***************
- *** 1912,1917 ****
- --- 1948,1955 ----
- (Cardinal)&curs_color, XtRString, NULL},
- {"iconGeometry", "IconGeometry", XtRString, sizeof(char *),
- (Cardinal)&icon_geometry, XtRString, NULL},
- + {"keepPosition", "KeepPosition", XtRBoolean, sizeof(Boolean),
- + (Cardinal)&keep_flag, XtRBoolean, (caddr_t) &keep_flag},
- {"copy", "Copy", XtRBoolean, sizeof(Boolean),
- (Cardinal)©, XtRBoolean, (caddr_t) ©},
- {"thorough", "Thorough", XtRBoolean, sizeof(Boolean),
- ***************
- *** 1953,1958 ****
- --- 1991,1997 ----
- static char *geometry;
- static char *margins;
- static char *offsets;
- + static Boolean hush;
-
- #ifndef X10
- static Boolean iconic = False;
- ***************
- *** 2012,2019 ****
- {"+l", "listFonts", FalseArg, BooleanArg, 1,(caddr_t) &list_fonts},
- {"-rv", NULL, TrueArg, BooleanArg, 2, (caddr_t) &reverse},
- {"+rv", "reverseVideo", FalseArg, BooleanArg, 1,(caddr_t) &reverse},
- ! {"-sw", NULL, TrueArg, BooleanArg, 2, (caddr_t) &spec_warn},
- ! {"+sw", "specialWarn", FalseArg, BooleanArg, 1,(caddr_t) &spec_warn},
- {"-bw", NULL, SepArg, NumberArg, 2, (caddr_t) &bwidth},
- {"-borderwidth", "borderWidth", SepArg, NumberArg, 1, (caddr_t) &bwidth},
- {"-fg", NULL, SepArg, StringArg, 2, (caddr_t) &fore_color},
- --- 2051,2062 ----
- {"+l", "listFonts", FalseArg, BooleanArg, 1,(caddr_t) &list_fonts},
- {"-rv", NULL, TrueArg, BooleanArg, 2, (caddr_t) &reverse},
- {"+rv", "reverseVideo", FalseArg, BooleanArg, 1,(caddr_t) &reverse},
- ! {"-hush", NULL, TrueArg, BooleanArg, 6, (caddr_t) &hush},
- ! {"+hush", "Hush", FalseArg, BooleanArg, 5,(caddr_t) &hush},
- ! {"-hushspecials", NULL, TrueArg, BooleanArg, 2, (caddr_t) &hush_spec},
- ! {"+hushspecials", "hushSpecials", FalseArg, BooleanArg, 1,(caddr_t) &hush_spec},
- ! {"-hushchars", NULL, TrueArg, BooleanArg, 2, (caddr_t) &hush_chars},
- ! {"+hushchars", "hushLostChars", FalseArg, BooleanArg, 1,(caddr_t) &hush_chars},
- {"-bw", NULL, SepArg, NumberArg, 2, (caddr_t) &bwidth},
- {"-borderwidth", "borderWidth", SepArg, NumberArg, 1, (caddr_t) &bwidth},
- {"-fg", NULL, SepArg, StringArg, 2, (caddr_t) &fore_color},
- ***************
- *** 2032,2037 ****
- --- 2075,2082 ----
- {"-icongeometry","iconGeometry",StickyArg, StringArg, 1,(caddr_t) &icon_geometry},
- {"-iconic", NULL, TrueArg, BooleanArg, 2, (caddr_t) &iconic},
- {"+iconic", "iconic", FalseArg, BooleanArg, 1,(caddr_t) &iconic},
- + {"-keep", NULL, TrueArg, BooleanArg, 2, (caddr_t) &keep_flag},
- + {"+keep", "keepPosition", FalseArg, BooleanArg, 1,(caddr_t) &keep_flag},
- {"-copy", NULL, TrueArg, BooleanArg, 2, (caddr_t) ©},
- {"+copy", "copy", FalseArg, BooleanArg, 1,(caddr_t) ©},
- {"-thorough", NULL, TrueArg, BooleanArg, 2, (caddr_t) &thorough},
- ***************
- *** 2061,2069 ****
- char **argvend = argv + argc;
- char *optstring;
- caddr_t addr;
- ! struct option *opt, *candidate;
- ! int len1, len2, matchlen, i;
-
- for (arg = argv + 1; arg < argvend; ++arg) {
- len1 = strlen(*arg);
- candidate = NULL;
- --- 2106,2117 ----
- char **argvend = argv + argc;
- char *optstring;
- caddr_t addr;
- ! struct option *opt, *lastopt, *candidate;
- ! int len1, len2, matchlen;
-
- + /*
- + * Step 1. Process command line options.
- + */
- for (arg = argv + 1; arg < argvend; ++arg) {
- len1 = strlen(*arg);
- candidate = NULL;
- ***************
- *** 2120,2128 ****
- case StringArg: *((char **) addr) = optstring; break;
- case NumberArg: *((int *) addr) = atoi(optstring); break;
- }
- ! for (i = candidate->classcount; i > 0; --i)
- ! (candidate++)->resource = NULL;
- }
-
- #ifndef X10
- if ((DISP = XOpenDisplay(display)) == NULL)
- --- 2168,2202 ----
- case StringArg: *((char **) addr) = optstring; break;
- case NumberArg: *((int *) addr) = atoi(optstring); break;
- }
- ! /* flag it for subsequent processing */
- ! candidate->resource = (char *) candidate;
- }
- + /*
- + * Step 2. Propagate classes for command line arguments. Backwards.
- + */
- + for (opt = options + XtNumber(options) - 1; opt >= options; --opt)
- + if (opt->resource == (char *) opt) {
- + addr = opt->address;
- + lastopt = opt + opt->classcount;
- + for (candidate = opt; candidate < lastopt; ++candidate) {
- + if (candidate->resource != NULL) {
- + switch (opt->argtype) {
- + case BooleanArg:
- + *((Boolean *) candidate->address) =
- + *((Boolean *) addr);
- + break;
- + case StringArg:
- + *((char **) candidate->address) =
- + *((char **) addr);
- + break;
- + case NumberArg:
- + *((int *) candidate->address) = *((int *) addr);
- + break;
- + }
- + candidate->resource = NULL;
- + }
- + }
- + }
-
- #ifndef X10
- if ((DISP = XOpenDisplay(display)) == NULL)
- ***************
- *** 2132,2137 ****
- --- 2206,2214 ----
- if (XOpenDisplay(display) == NULL)
- oops("Can't open display");
- #endif
- + /*
- + * Step 3. Handle resources (including classes).
- + */
- for (opt = options; opt < options + XtNumber(options); ++opt)
- if (opt->resource &&
- #ifndef X10
- ***************
- *** 2140,2161 ****
- #else
- (optstring = XGetDefault(DPY prog, opt->resource)))
- #endif
- ! switch (opt->argtype) {
- ! case StringArg:
- ! *((char **) opt->address) = optstring;
- ! break;
- ! case NumberArg:
- ! *((int *) opt->address) = atoi(optstring);
- ! break;
- ! case BooleanArg:
- ! *((Boolean *) opt->address) =
- ! (strcmp(optstring, "on") == 0);
- }
- -
- - if (!sidemargin) sidemargin = margins;
- - if (!topmargin) topmargin = margins;
- - if (!xoffset) xoffset = offsets;
- - if (!yoffset) yoffset = offsets;
- }
-
- #endif /* TOOLKIT */
- --- 2217,2237 ----
- #else
- (optstring = XGetDefault(DPY prog, opt->resource)))
- #endif
- ! {
- ! lastopt = opt + opt->classcount;
- ! for (candidate = opt; candidate < lastopt; ++candidate)
- ! if (candidate->resource != NULL) switch (opt->argtype) {
- ! case StringArg:
- ! *((char **) candidate->address) = optstring;
- ! break;
- ! case NumberArg:
- ! *((int *) candidate->address) = atoi(optstring);
- ! break;
- ! case BooleanArg:
- ! *((Boolean *) candidate->address) =
- ! (strcmp(optstring, "on") == 0);
- ! }
- }
- }
-
- #endif /* TOOLKIT */
- ***************
- *** 2382,2389 ****
- --- 2458,2478 ----
- highGC = MakeGC(GXcopy, hl_Pixel, back_Pixel);
- }
-
- + #ifndef VMS
- ready_cursor = XCreateFontCursor(DISP, XC_cross);
- redraw_cursor = XCreateFontCursor(DISP, XC_watch);
- + #else
- + DECWCursorFont = XLoadFont(DISP, "DECW$CURSOR");
- + XSetFont(DISP, foreGC, DECWCursorFont);
- + redraw_cursor = XCreateGlyphCursor(DISP, DECWCursorFont, DECWCursorFont,
- + decw$c_wait_cursor, decw$c_wait_cursor + 1,
- + &fore_color, &back_color);
- + MagnifyPixmap = XCreateBitmapFromData (DISP, RootWindowOfScreen(SCRN),
- + mag_glass_bits, mag_glass_width, mag_glass_height);
- + ready_cursor = XCreatePixmapCursor(DISP, MagnifyPixmap, MagnifyPixmap,
- + &back_color, &fore_color, mag_glass_x_hot, mag_glass_y_hot);
- + #endif /* VMS */
- +
- if (!curs_color)
- cr_Pixel = high_color ? hl_Pixel : fore_Pixel;
- {
- ***************
- *** 2637,2643 ****
- #endif /* X10 */
-
- do_pages();
- ! #ifdef lint
- ! return 0;
- ! #endif
- }
- --- 2726,2730 ----
- #endif /* X10 */
-
- do_pages();
- ! /* NOTREACHED */
- }
- diff -cr old/xdvi.h new/xdvi.h
- *** old/xdvi.h Sun Oct 21 14:49:17 1990
- --- new/xdvi.h Tue Jan 15 15:17:41 1991
- ***************
- *** 135,141 ****
- extern int maxstack;
- extern int n_fonts_left; /* for LRU management of fonts */
- extern time_t dvi_time; /* last mod. time for dvi file */
- - extern char *font_path;
- extern int page_w, page_h;
-
- /*
- --- 135,140 ----
- ***************
- *** 145,153 ****
- extern long *page_offset;
-
- /*
- ! * Mechanism for reducing repeated warning about specials.
- */
- ! extern Boolean spec_warn, spec_warn_now;
-
-
- /*
- --- 144,153 ----
- extern long *page_offset;
-
- /*
- ! * Mechanism for reducing repeated warning about specials, lost characters, etc.
- */
- ! extern Boolean hush_spec, hush_spec_now;
- ! extern Boolean hush_chars;
-
-
- /*
- ***************
- *** 202,208 ****
- struct font *next; /* link to next font info block */
- int TeXnumber; /* font number (in DVI file) */
- int scale; /* scaled size in SPELL units */
- - float factor; /* multiply char. widths by this */
- char *fontname; /* PXL file name */
- short size; /* dots per 5 inches */
- FILE *file; /* open PXL file or NULL */
- --- 202,207 ----
- diff -cr old/xdvi_man.sed new/xdvi_man.sed
- *** old/xdvi_man.sed Sun Oct 21 14:49:31 1990
- --- new/xdvi_man.sed Sat Feb 2 16:20:39 1991
- ***************
- *** 9,19 ****
- .B xdvi
- .nh
- [+[\fIpage\fP]] [\-s \fIshrink\fP] [\-S \fIdensity\fP] [\-p \fIpixels\fP] [\-l]
- ! [\-sw] [\-paper \fIpapertype\fP] [\-mgs[\fIn\fP] \fIsize\fP]
- ! [\-altfont \fIfont\fP]
- [\-margins \fIdimen\fP] [\-sidemargin \fIdimen\fP] [\-topmargin \fIdimen\fP]
- [\-offsets \fIdimen\fP] [\-xoffset \fIdimen\fP] [\-yoffset \fIdimen\fP]
- ! [\-rv] [\-fg \fIcolor\fP] [\-bg \fIcolor\fP]
- [\-hl \fIcolor\fP] [\-bd \fIcolor\fP] [\-cr \fIcolor\fP] [\-bw \fIwidth\fP]
- #ifx11
- [\-geometry \fIgeometry\fP] [\-icongeometry \fIgeometry\fP] [\-iconic]
- --- 9,19 ----
- .B xdvi
- .nh
- [+[\fIpage\fP]] [\-s \fIshrink\fP] [\-S \fIdensity\fP] [\-p \fIpixels\fP] [\-l]
- ! [\-paper \fIpapertype\fP] [\-mgs[\fIn\fP] \fIsize\fP]
- ! [\-hushspecials] [-hushchars] [-hush] [\-altfont \fIfont\fP]
- [\-margins \fIdimen\fP] [\-sidemargin \fIdimen\fP] [\-topmargin \fIdimen\fP]
- [\-offsets \fIdimen\fP] [\-xoffset \fIdimen\fP] [\-yoffset \fIdimen\fP]
- ! [\-keep] [\-rv] [\-fg \fIcolor\fP] [\-bg \fIcolor\fP]
- [\-hl \fIcolor\fP] [\-bd \fIcolor\fP] [\-cr \fIcolor\fP] [\-bw \fIwidth\fP]
- #ifx11
- [\-geometry \fIgeometry\fP] [\-icongeometry \fIgeometry\fP] [\-iconic]
- ***************
- *** 94,105 ****
- (%%dot%%listFonts)
- Causes the names of the fonts used to be listed.
- .TP
- ! .B \-sw
- ! (%%dot%%specialWarn)
- ! Causes \fIxdvi\fR to warn the user when it encounters a \\special string
- ! which it cannot process. This option is on by default; to turn it off,
- ! use \fB+sw\fR.
- .TP
- .B \-rv
- (%%dot%%reverseVideo)
- Causes the page to be displayed with white characters on a
- --- 94,113 ----
- (%%dot%%listFonts)
- Causes the names of the fonts used to be listed.
- .TP
- ! .B \-hushspecials
- ! (%%dot%%hushSpecials)
- ! Causes \fIxdvi\fR to suppress warnings about \\special strings
- ! which it cannot process.
- .TP
- + .B \-hushchars
- + (%%dot%%hushLostChars)
- + Causes \fIxdvi\fR to suppress warnings about references to characters which
- + are not defined in the font.
- + .TP
- + .B \-hush
- + (%%dot%%Hush)
- + Causes \fIxdvi\fR to suppress all suppressable warnings.
- + .TP
- .B \-rv
- (%%dot%%reverseVideo)
- Causes the page to be displayed with white characters on a
- ***************
- *** 159,169 ****
- Always use the \fIcopy\fR operation when writing characters to the display.
- This option may be necessary for correct operation on a color display, but
- overstrike characters will be incorrect.
- #ifbuttons
- .TP
- .B \-expert
- (.expert)
- ! Prevent the buttons from appearing.
- #endif
- .TP
- .BI \-margins " dimen"
- --- 167,182 ----
- Always use the \fIcopy\fR operation when writing characters to the display.
- This option may be necessary for correct operation on a color display, but
- overstrike characters will be incorrect.
- + .TP
- + .B \-keep
- + (.keepPosition)
- + Sets a flag to indicate that \fIxdvi\fR should not move to the home position
- + when moving to a new page. See also the `k' keystroke.
- #ifbuttons
- .TP
- .B \-expert
- (.expert)
- ! Prevent the buttons from appearing. See also the `x' keystroke.
- #endif
- .TP
- .BI \-margins " dimen"
- ***************
- *** 345,359 ****
- of the same file while running \fIxdvi\fR only once.
- .TP
- .B k
- ! Normally when \fIxdvi\fR switches pages it moves to the home position as well.
- The `k' keystroke toggles a `keep-position' flag which, when set, will keep
- the same position when moving between pages. Also `0k' and `1k' clear and
- ! set this flag, respectively.
- #ifbuttons
- .TP
- .B x
- Toggles expert mode (in which the buttons do not appear). Also `0x' and `1x'
- ! clear and reset this mode, respectively.
- #endif
- .SH MOUSE ACTIONS
- If the shrink factor is set to any number other than one, then clicking
- --- 358,372 ----
- of the same file while running \fIxdvi\fR only once.
- .TP
- .B k
- ! Normally when \fIxdvi\fR switches pages, it moves to the home position as well.
- The `k' keystroke toggles a `keep-position' flag which, when set, will keep
- the same position when moving between pages. Also `0k' and `1k' clear and
- ! set this flag, respectively. See also the \fB\-keep\fR option.
- #ifbuttons
- .TP
- .B x
- Toggles expert mode (in which the buttons do not appear). Also `0x' and `1x'
- ! clear and reset this mode, respectively. See also the \fB\-expert\fR option.
- #endif
- .SH MOUSE ACTIONS
- If the shrink factor is set to any number other than one, then clicking
- ***************
- *** 388,393 ****
- --- 401,423 ----
- If the font cannot be found at all, then \fIxdvi\fR will try to vary the point
- size of the font (within a certain range), and if this fails, then it will
- use the font specified as the alternate font (cf. \fB-altfont\fR).
- + .PP
- + For compatibility with TeX, you may also use ``TEXFONTS'' in place of
- + ``XDVIFONTS'', although in that case the variable should not include any
- + ``%'' specifiers.
- + #ifsubdir
- + .PP
- + You can also enable recursive searching in the font path by using the ``*''
- + and ``**'' specifiers. At this point in the path, \fIxdvi\fR will recursively
- + search subdirectories of the given directory in order to find font files.
- + A single asterisk limits the search to one level; a double asterisk will search
- + through an arbitrary number of levels. Also, the variable TEXFONTS_SUBDIR
- + can be used to give a colon-separated list of directories to recursively search.
- + This is equivalent to including the specifiers with a ``*'' after each; the
- + usual conventions regarding extra colons applies here, too, relative to a
- + default subdirectory path. Asterisks may not be preceded by a ``%'' specifier
- + in any path component.
- + #endif
- .PP
- The ``XDVISIZES'' variable must be set to indicate which sizes of fonts are
- available. It should consists of a list of numbers separated by colons. If
- --
- Dan Heller
- ------------------------------------------------
- O'Reilly && Associates Zyrcom Inc
- Senior Writer President
- argv@ora.com argv@zipcode.com
-